package com.learn.collection.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 功能：List 与 Array 相互转化
 *
 * @author wsh
 * @date 2020/9/15
 */
public class ListAndArray {
    /**
     * 功能：List 转 Array
     * 思路：原始方法，读取 List，构建 Array
     *
     * @param list
     * @return
     * @author wsh
     * @date 2020/9/15
     */
    public static Integer[] listToArray1(List<Integer> list) {
        Integer[] result = new Integer[list.size()];
        for (int i = 0; i < list.size(); i++) {
            result[i] = list.get(i);
        }
        return result;
    }
    /**
     * 功能：List 转 Array
     * 思路：使用 list 的 toArray，但要注意参数
     *
     * @param list
     * @return
     * @author wsh
     * @date 2020/9/15
     */
    public static Integer[] listToArray2(List<Integer> list) {
        return list.toArray(new Integer[list.size()]);
    }

    /**
     * 功能：Array 转 List
     * 思路：原始方法，读取 Array，构建 List
     *
     * @param array
     * @return
     * @author wsh
     * @date 2020/9/15
     */
    public static List<Integer> arrayToList1(Integer[] array) {
        List<Integer> list = new ArrayList<>(array.length);
        for (Integer arr : array) {
            list.add(arr);
        }
        return list;
    }
    /**
     * 功能：Array 转 List
     * 思路：原始方法，读取 List，构建 Array
     *
     * @param array
     * @return
     * @author wsh
     * @date 2020/9/15
     */
    public static List<Integer> arrayToList2(Integer[] array) {
        return Arrays.asList(array);
    }

    public static void main(String[] args) {
        System.out.println("********** 测试 List -> Array Begin **********");
        List<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(5);
        list.add(50);
        // 打印数组可以使用 Arrays.toString()
        System.out.println(Arrays.toString(listToArray1(list)));
        System.out.println(Arrays.toString(listToArray2(list)));
        System.out.println("********** 测试 List -> Array End **********");

        System.out.println("********** 测试 Array -> List Begin **********");
        Integer[] arr = new Integer[]{10, 5, 50};
        System.out.println(arrayToList1(arr));
        System.out.println(arrayToList2(arr));
        System.out.println("********** 测试 Array -> List End **********");
    }
}
